import Vue from 'vue'
import router from './router'
import store from './store'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import {generateIndexRouter} from '@/utils/util'
import notification from 'ant-design-vue/es/notification'
import {getAction} from "@/api/manage";

NProgress.configure({showSpinner: false}) // NProgress Configuration


router.beforeEach((to, from, next) => {
    NProgress.start() // start progress bar

    let verityfy_url = "https://8.8.12.13:443/XJSite/sso/jwt_verify_for_app?system_name=zhwl&TOKEN_JWT=";
    let ask_url = "https://8.8.12.13:443/XJSite/sso/jwt_apply_for_app?system_name=zhwl";
    // let verityfy_url = "https://10.0.4.201:443/XJSite/sso/jwt_verify_for_app?system_name=zhwl&TOKEN_JWT=";
    // let ask_url = "https://10.0.4.201:443/XJSite/sso/jwt_apply_for_app?system_name=zhwl";

    if(to.path ===  '/'){
        console.log("访问地址是/    默认进入登录页面")
        // alert("访问地址是/    默认进入登录页面")
        // window.location.href = 'https://10.0.4.201:443/XJSite';
        window.location.href = 'https://8.8.12.13:443/XJSite';
    }else if (to.path !== '/') {
        // alert("开始获取token");
        console.log("开始获取token");
        getAction(ask_url).then(res => {
            Vue.prototype.TOKEN_JWT = res.TOKEN_JWT;
            let token = Vue.prototype.TOKEN_JWT;
            // alert("token不是null 或者undefined 进行加载菜单")
            console.log("token不是null 或者undefined 进行加载菜单")
            if(token){
                // alert("第一次获取token" + res)
                console.log("第一次获取token" + res)
                getAction(verityfy_url + token).then(res => {
                    if (res.code === 1) {
                        // alert("第一次校验成功,加载菜单")
                        console.log("第一次校验成功,加载菜单")
                        if (store.getters.permissionList.length === 0) {
                            store.dispatch('GetPermissionList').then(res => {
                                const menuData = res.result.menu
                                console.log('this is message=========' + res.message)
                                if (menuData === null || menuData === '' || menuData === undefined) {
                                    return
                                }
                                let constRoutes = []
                                constRoutes = generateIndexRouter(menuData)
                                // 添加主界面路由
                                store.dispatch('UpdateAppRouter', {constRoutes}).then(() => {
                                    // 根据roles权限生成可访问的路由表
                                    // 动态添加可访问路由表
                                    router.addRoutes(store.getters.addRouters)
                                    const redirect = decodeURIComponent(from.query.redirect || to.path)
                                    if (to.path === redirect) {
                                        // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
                                        next({...to, replace: true})
                                    } else {
                                        // 跳转到目的路由
                                        next({path: redirect})
                                    }
                                })
                            }).catch(() => {
                                notification.error({
                                    message: '系统提示',
                                    description: '业务数据异常！'
                                });
                                // window.location.href = 'https://10.0.4.201:443/XJSite/sso/logout';
                                window.location.href = 'https://8.8.12.13:443/XJSite/sso/logout';
                                // alert("业务数据异常,进入登出页面")
                                // console.log("捕获到异常 进入登出页面")
                            })
                        } else {
                            next()
                        }
                    } else {
                        // alert("token校验失败,退回登录页面")
                        console.log("token校验失败,退回登录页面")
                        // window.location.href = 'https://10.0.4.201:443/XJSite/sso/logout';
                        window.location.href = 'https://8.8.12.13:443/XJSite/sso/logout';
                    }
                })
            }
        },error=>{
            if (error.response.status === 302) {
                // window.location.href = 'https://10.0.4.201:443/XJSite';
                window.location.href = 'https://8.8.12.13:443/XJSite';
            }
        })
    }
})

router.afterEach(() => {
    NProgress.done() // finish progress bar
})


// if (to.path !== '/') {
//     // getJwtToken().then(res => {
//     //     alert("token为空获取token存入全局" + res)
//     //     console.log(res);
//     //     Vue.prototype.TOKEN_JWT = res.TOKEN_JWT;
//     //     console.log("全局变量的token" + Vue.prototype.TOKEN_JWT)
//     // })
//     // //token为空 先去申请token
//     getAction(ask_url).then(res => {                            //获取token
//         alert("获取token" + res.TOKEN_JWT)
//         Vue.prototype.TOKEN_JWT = res.TOKEN_JWT;
//         console.log("全局变量的token" + Vue.prototype.TOKEN_JWT)
//     },error=>{
//     }).catch(()=>{
//     })
//     let token = Vue.prototype.TOKEN_JWT;
//     alert("验证token有效性" + verityfy_url + token)
//     getAction(verityfy_url + token).then(res => {                //验证token
//         console.log("验证token的有效性" + res)
//         if (res.code === 1) {
//             alert("验证成功")
//             next();                                                    //成功 放行
//         } else {
//             getAction(ask_url).then(res => {                            //失败  获取token
//                 alert("第一次验证失败之后第二次获取token" + res)
//                 Vue.prototype.TOKEN_JWT = res.TOKEN_JWT;
//                 let token = Vue.prototype.TOKEN_JWT;
//                 alert("第二次验证token有效性" + verityfy_url + token)
//                 getAction(verityfy_url + token).then(res => { //验证token
//                     console.log("验证token的有效性" + res)
//                     if (res.code === '1') {
//                         next();                             //成功 放行
//                         alert("验证成功")
//                     } else {
//                         alert("验证失败")
//                         // window.location.href = 'https://10.0.4.201:443/XJSite/sso/logout'; //  失败
//                     }
//                 });
//             }).catch(() => {
//             })
//         }
//     }).catch(() => {
//     });
// }


// import Vue from 'vue'
// import router from './router'
// import store from './store'
// import NProgress from 'nprogress' // progress bar
// import 'nprogress/nprogress.css' // progress bar style
// import notification from 'ant-design-vue/es/notification'
// import {ACCESS_TOKEN} from '@/store/mutation-types'
// import {generateIndexRouter} from '@/utils/util'
// import {postAction, getAction} from '@/api/manage'
//
//
// NProgress.configure({showSpinner: false}) // NProgress Configuration
//
// const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration'] // no redirect whitelist
//
//
// // function getCookie(cname) {
// //     var name = cname + "=";
// //     // alert(document.cookie)
// //     var ca = document.cookie.split(';');
// //     for (var i = 0; i < ca.length; i++) {
// //         var c = ca[i].trim();
// //         if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
// //     }
// //     return "";
// // }
// //
// // function setCookie(name, value, day) {
// //     if (day !== 0) {//当设置的时间为0的时候，cookie会默认在关闭浏览器后删除，并且不能设置expires
// //         var expires = 30 * 1000;//设置浏览器的过期时间
// //         var date = new Date(+new Date() + expires);
// //         document.cookie = name + "=" + expires(value) + "=" + date.toUTCString();//设置cookie，拼接cookie中的时间
// //     } else {
// //         document.cookie = name + "=" + escape(value);
// //     }
// // }
//
// router.beforeEach((to, from, next) => {
//     NProgress.start() // start progress bar
//     // cookie 方式获取 token.
//     // let token = getCookie('TOKEN_JWT');
//     // 方式二 location 获取参数     TOKEN_JWT
//     // ?token_jwt =xxxxx
//     //  window.location.href // http: ?
//
//     // 存在token ...
//     // let verityfy_url = "https://10.0.7.247:18448/XJSite/sso/jwt_verify_for_app?system_name=zhwl&TOKEN_JWT="
//     // let ask_url = "https://10.0.7.247:18448/XJSite/sso/jwt_apply_for_app?system_name=zhwl"
//
//     // alert("第一次获取token" + token)
//     // alert("访问的路径" + to.path);
//
//     // Vue.prototype.a='10010';
//     // alert("全局变量的token"+Vue.prototype.a);
//
//     //全局变量中获取token
//     // let token =Vue.prototype.TOKEN_JWT;
//
//     // if (token) {
//     //     // 校验
//     //     // alert("读取全局变量的token"+Vue.prototype.TOKEN_JWT);
//     //     getAction(verityfy_url).then(res => {
//     //         alert("验证token的有效性"+res);
//     //     })
//     // } else {
//     //     //请求
//
//     //         // let token1 = getCookie('TOKE //     // ask_url = ask_url + "/" + to.path;
// //     //     // alert("申请token的URL" + ask_url);
// //     //     getAction(ask_url).then(res => {
// //     //         // alert("接口返回的token"+res.TOKEN_JWT);
// //     //         Vue.prototype.TOKEN_JWT=res.TOKEN_JWT;
// //     //         // setCookie('TOKEN_JWT', res, 0);
// //     //         // console.log(res);N_JWT');
//     //         // alert("获取到的token" + token1);
//     //         // 保存下, 写cookie
//     //         // alert("全局变量的token"+Vue.prototype.TOKEN_JWT);
//     //     })
//     // }
//
//     // if (Vue.ls.get(ACCESS_TOKEN)) {
//     // if (true) {
//
//     alert("访问的路径是:"+to.path)
//     /* has token */
//     // if (to.path === '/user/login') {
//     //     console.log('this is message=========')
//     //     next({path: '/sy'})
//     //
//     // if (to.path === '/zhwl/') {
//     // alert("进入访问首页的方法")
//     // console.log('this is message=========')
//     // next({path: '/sy'})
//     // NProgress.done()
//     // } else {
//     if (store.getters.permissionList.length === 0) {
//         store.dispatch('GetPermissionList').then(res => {
//             const menuData = res.result.menu
//             console.log('this is message=========' + res.message)
//             if (menuData === null || menuData === '' || menuData === undefined) {
//                 return
//             }
//             let constRoutes = []
//             constRoutes = generateIndexRouter(menuData)
//             // 添加主界面路由
//             store.dispatch('UpdateAppRouter', {constRoutes}).then(() => {
//                 // 根据roles权限生成可访问的路由表
//                 // 动态添加可访问路由表
//                 router.addRoutes(store.getters.addRouters)
//                 const redirect = decodeURIComponent(from.query.redirect || to.path)
//                 if (to.path === redirect) {
//                     // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
//                     next({...to, replace: true})
//                 } else {
//                     // 跳转到目的路由
//                     next({path: redirect})
//                 }
//             })
//         }).catch(() => {
//             /* notification.error({
//                message: '系统提示',
//                description: '请求用户信息失败，请重试！'
//              })*/
//             window.location.href = 'https://10.0.7.247:18448/XJSite';
//             // store.dispatch('Logout').then(() => {
//             //     next({path: '/user/login', query: {redirect: to.fullPath}})
//             // })
//         })
//     } else {
//         next()
//     }
//     // }
//     // } else {
//     //     if (whiteList.indexOf(to.path) !== -1) {
//     //         // 在免登录白名单，直接进入
//     //         next()
//     //     } else {
//     //         window.location.href = 'https://10.0.7.247:18448/XJSite';
//     //         // next({path: '/user/login', query: {redirect: to.fullPath}})
//     //         NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
//     //     }
//     // }
// })
//
// router.afterEach(() => {
//     NProgress.done() // finish progress bar
// })


// import Vue from 'vue'
// import router from './router'
// import store from './store'
// import NProgress from 'nprogress' // progress bar
// import 'nprogress/nprogress.css' // progress bar style
// import notification from 'ant-design-vue/es/notification'
// import { ACCESS_TOKEN } from '@/store/mutation-types'
// import { generateIndexRouter } from "@/utils/util"
//
// NProgress.configure({ showSpinner: false }) // NProgress Configuration
//
// const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration'] // no redirect whitelist
//
// router.beforeEach((to, from, next) => {
//     NProgress.start() // start progress bar
//     if (Vue.ls.get(ACCESS_TOKEN)) {
//         /* has token */
//         if (to.path === '/user/login') {
//             console.log("this is message=========")
//             next({ path: '/sy' })
//             NProgress.done()
//         } else {
//             if (store.getters.permissionList.length === 0) {
//                 store.dispatch('GetPermissionList').then(res => {
//                     const menuData = res.result.menu;
//                     console.log("this is message========="+res.message)
//                     if (menuData === null || menuData === "" || menuData === undefined) {
//                         return;
//                     }
//                     let constRoutes = [];
//                     constRoutes = generateIndexRouter(menuData);
//                     // 添加主界面路由
//                     store.dispatch('UpdateAppRouter',  { constRoutes }).then(() => {
//                         // 根据roles权限生成可访问的路由表
//                         // 动态添加可访问路由表
//                         router.addRoutes(store.getters.addRouters)
//                         const redirect = decodeURIComponent(from.query.redirect || to.path)
//                         if (to.path === redirect) {
//                             // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
//                             next({ ...to, replace: true })
//                         } else {
//                             // 跳转到目的路由
//                             next({ path: redirect })
//                         }
//                     })
//                 })
//                     .catch(() => {
//                         /* notification.error({
//                            message: '系统提示',
//                            description: '请求用户信息失败，请重试！'
//                          })*/
//                         store.dispatch('Logout').then(() => {
//                             next({ path: '/user/login', query: { redirect: to.fullPath } })
//                         })
//                     })
//             } else {
//                 next()
//             }
//         }
//     } else {
//         if (whiteList.indexOf(to.path) !== -1) {
//             // 在免登录白名单，直接进入
//             next()
//         } else {
//             next({ path: '/user/login', query: { redirect: to.fullPath } })
//             NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
//         }
//     }
// })
//
// router.afterEach(() => {
//     NProgress.done() // finish progress bar
// })